// axios的封装
import JSONbig from 'json-bigint'
import axios from 'axios' // 在node_modules中定义的
// 1. 给它一个默认url： 设置基地址
//    有了这个基地址之后，则后续请求中，可以省略这一段

// axios这个库中提供的功能 .defaults.baseURL
axios.defaults.baseURL = 'http://api-toutiao-web.itheima.net'

// 2、在请求拦截器中，统一添加token(interceptors拦截器)
axios.interceptors.request.use(function (config) {
  // config就是本次请求采用的配置
  // 所有的请求发出去之前，都会进入这个函数
  console.log('拦截器1.....', config)
  const tokenStr = localStorage.getItem('tokenStr')// 直接从本地储存获取token了
  // 如果有to本地ken,就给加上
  if (tokenStr) {
    // 一个请求是否需要在请求头中添加参数，是由接口决定的
    // 本接口需要我们传入token，并以如下的格式去传
    config.headers.Authorization = `Bearer ${tokenStr}`
  }
  return config
}, function (error) {
  // 处理请求错误
  return Promise.reject(error)
})

// 3 、引入jsonbigint来处理大数
axios.defaults.transformResponse = [
  function (data) {
    console.log('本次请求，从后端取回的数据是', data)
    try {
      return JSONbig.parse(data) // 后端返回的数据不能为空
    } catch (err) {
      console.log('JSONbig.parse出错', data)
      return data
    }
  }
]
// 默认导出
export default axios
